home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 22 / Cream of the Crop 22.iso / program / ctlib100.zip / INSTALL.LZH / COLLECT7.PAS < prev    next >
Pascal/Delphi Source File  |  1996-10-12  |  2KB  |  99 lines

  1. {**************************************************************************}
  2. {*  BitSoft Development, L.L.C.                                           *}
  3. {*  Copyright (C) 1995, 1996 BitSoft Development, L.L.C.                  *}
  4. {*  All rights reserved.                                                  *}
  5. {*  Containers Library demo                                               *}
  6. {**************************************************************************}
  7.  
  8. program Collect7;
  9.  
  10. {$X+}
  11.  
  12. { Sample program for using a huge EMS sorted string collection. }
  13.  
  14. uses Objects, Containr, ctCollec,
  15.      {$ifdef Windows}
  16.      WinCtr;
  17.      {$else}
  18.      Crt;
  19.      {$endif}
  20.  
  21. procedure DisplayStrings(StringList : PSequence);
  22.  
  23.   procedure PrintString(Str : PString); far;
  24.   begin
  25.     Writeln(Str^);
  26.   end;
  27.  
  28. begin
  29.   StringList^.ForEach(@PrintString);
  30. end;
  31.  
  32. procedure DisplayFirst(StringList : PSequence);
  33. var
  34.   Item : Pointer;
  35.   Index : LongInt;
  36. begin
  37.   Item := StringList^.First(Index);
  38.   Writeln('First item:');
  39.   writeln(PString(Item)^);
  40.   StringList^.DoneItem(Item); { not required }
  41. end;
  42.  
  43. procedure DisplayLast(StringList : PSequence);
  44. var
  45.   Item : Pointer;
  46.   Index : LongInt;
  47. begin
  48.   Item := StringList^.Last(Index);
  49.   Writeln('Last item:');
  50.   writeln(PString(Item)^);
  51.   StringList^.DoneItem(Item); { not required }
  52. end;
  53.  
  54. procedure FindString(StringList : PSequence;  SearchStr : string);
  55. var
  56.   Index : LongInt;
  57. begin
  58.   if StringList^.Search(@SearchStr, Index)
  59.     then begin
  60.            Writeln('String found:');
  61.            Writeln(PString(StringList^.At(Index))^)
  62.          end { if }
  63.     else Writeln('String not found.');
  64. end;
  65.  
  66. var
  67.   StringList : PEmsStringCollection;
  68.  
  69. begin
  70.   ClrScr;
  71.  
  72.   { Create the collection }
  73.   StringList := New(PEmsStringCollection, Init(50, 10));
  74.   if StringList = nil
  75.     then begin
  76.            Writeln('No EMS memory available.');
  77.            Halt(1);
  78.          end; { if }
  79.  
  80.   { Insert items into the collection }
  81.   with StringList^ do
  82.   begin
  83.     Insert(NewStr('Sky'));
  84.     Insert(NewStr('Absolute'));
  85.     Insert(NewStr('Temporary'));
  86.     Insert(NewStr('Field'));
  87.   end; { with }
  88.  
  89.   DisplayStrings(StringList);
  90.   Writeln;
  91.   DisplayFirst(StringList);
  92.   Writeln;
  93.   DisplayLast(StringList);
  94.   Writeln;
  95.   FindString(StringList, 'Field');
  96.  
  97.   { Dispose of the collection and all the objects in it }
  98.   Dispose(StringList, Done);
  99. end.